C语言:解决九宫格问题

题目:1~9这九个数字分布在九宫格上,要求三条纵线、三条横线和两条对角线都相等。利用C语言解出所有答案。

#include <stdio.h>

int main()
{
	unsigned char array[3][3] = {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}};
	
	for(array[0][0] = 1; array[0][0] < 10; array[0][0]++)
	{
		for(array[0][1] = 1; array[0][1] < 10; array[0][1]++)
		{
			if(array[0][1] == array[0][0])
				continue;
			for(array[0][2] = 1; array[0][2] < 10; array[0][2]++)
			{	
				if(array[0][2] == array[0][0])
					continue;
				if(array[0][2] == array[0][1])
					continue;
				if((array[0][0] + array[0][1] + array[0][2]) != 15)
					continue;

				for(array[1][0] = 1; array[1][0] < 10; array[1][0]++)
				{
					if(array[1][0] == array[0][0])
						continue;
					if(array[1][0] == array[0][1])
						continue;					
					if(array[1][0] == array[0][2])
						continue;
					for(array[1][1] = 1; array[1][1] < 10; array[1][1]++)
					{
						if(array[1][1] == array[0][0])
							continue;
						if(array[1][1] == array[0][1])
							continue;					
						if(array[1][1] == array[0][2])
							continue;
						if(array[1][1] == array[1][0])
							continue;
						for(array[1][2] = 1; array[1][2] < 10; array[1][2]++)
						{
							if(array[1][2] == array[0][0])
								continue;
							if(array[1][2] == array[0][1])
								continue;					
							if(array[1][2] == array[0][2])
								continue;
							if(array[1][2] == array[1][0])
								continue;
							if(array[1][2] == array[1][1])
								continue;
							if((array[1][0] + array[1][1] + array[1][2]) != 15)
								continue;

							for(array[2][0] = 1; array[2][0] < 10; array[2][0]++)
							{
								if(array[2][0] == array[0][0])
									continue;
								if(array[2][0] == array[0][1])
									continue;					
								if(array[2][0] == array[0][2])
									continue;
								if(array[2][0] == array[1][0])
									continue;
								if(array[2][0] == array[1][1])
									continue;
								if(array[2][0] == array[1][2])
									continue;

								if((array[0][0] + array[1][0] + array[2][0]) != 15)
									continue;

								for(array[2][1] = 1; array[2][1] < 10; array[2][1]++)
								{
									if(array[2][1] == array[0][0])
										continue;
									if(array[2][1] == array[0][1])
										continue;					
									if(array[2][1] == array[0][2])
										continue;
									if(array[2][1] == array[1][0])
										continue;
									if(array[2][1] == array[1][1])
										continue;
									if(array[2][1] == array[1][2])
										continue;
									if(array[2][1] == array[2][0])
										continue;

									if((array[0][1] + array[1][1] + array[2][1]) != 15)
										continue;

									for(array[2][2] = 1; array[2][2] < 10; array[2][2]++)
									{
										if(array[2][2] == array[0][0])
											continue;
										if(array[2][2] == array[0][1])
											continue;					
										if(array[2][2] == array[0][2])
											continue;
										if(array[2][2] == array[1][0])
											continue;
										if(array[2][2] == array[1][1])
											continue;
										if(array[2][2] == array[1][2])
											continue;
										if(array[2][2] == array[2][0])
											continue;								
										if(array[2][2] == array[2][1])
											continue;	

										if((array[2][0] + array[2][1] + array[2][2]) != 15)
											continue;

										if((array[0][2] + array[1][2] + array[2][2]) != 15)
											continue;

										if((array[0][0] + array[1][1] + array[2][2]) != 15)
											continue;
										if((array[0][2] + array[1][1] + array[2][0]) != 15)
											continue;

										printf("%d %d %d\n", array[0][0], array[0][1],  array[0][2]);
										printf("%d %d %d\n", array[1][0], array[1][1],  array[1][2]);
										printf("%d %d %d\n", array[2][0], array[2][1],  array[2][2]);

										printf("\n");
									}									
								}	
							}
						}					
					}	
				}			
			}
		}	
	}
	getchar();
}

结果如下:

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenSun-1990

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值